<?php 

/**
 * @author Fernando Dias <rodox17@gmail.com>
 */

class Form{
	public $elementos;
	public $valor;
	public $dados;
	public $required;
	public $tabela;
	public $multi;
	
	function setValor($valor){
		$this->valor=$valor;
	}
	
	static function upload($name, $tmp_name, $upload_path){
		$path=$upload_path."/".$name;
		
		unserialize($path);
		move_uploaded_file($tmp_name, $path);
		            
		return $path;
    }
    
	function setTexto($nome_elemento,$titulo,$valor=null,$required=null,$class=null,$tipo=null,$opt=null,$left=null){
		($required)?$this->required[$nome_elemento]=$titulo:null;
		$r=($required)?"*":null;
		$this->elementos[] = array(
			"nome"=>$nome_elemento,
			"elemento"=>"<label>$titulo$r</label>
				<input $opt class='$class $required text-input' type='text' 
				value='$valor' name='$nome_elemento' id='$nome_elemento' />
				<br />
				<small></small>",
			"class"=>"$class $required",
			"left"=>$left
		);
		
		if($tipo){
			$this->criaTabela($nome_elemento,$tipo);
		}
	}
    
	function setBotao($nome_elemento,$titulo,$valor=null,$required=null,$class=null,$tipo=null,$opt=null,$left=null){
		($required)?$this->required[$nome_elemento]=$titulo:null;
		$r=($required)?"*":null;
		$this->elementos[] = array(
			"nome"=>$nome_elemento,
			"elemento"=>"<label><input $opt class='$class' style='border:1px solid #cccccc;' type='button' value='$titulo' name='$nome_elemento' id='$nome_elemento' /></label>",
			"class"=>$class,
			"left"=>$left
		);
		
		if($tipo){
			$this->criaTabela($nome_elemento,$tipo);
		}
	}
    
	function setSenha($nome_elemento,$titulo,$valor=null,$required=null){
		//$this->valor[$nome_elemento]=$valor;
		$this->elementos[] = array(
			"nome"=>$nome_elemento,
			"elemento"=>"<label><div>$titulo</div><input class='$required' style='width:368px;border:1px solid #cccccc;' type='password' value='$valor' name='$nome_elemento' /></label>"
		);
	}
    
	function setCheckbox($nome_elemento,$titulo,$valor=null,$required=null){
		$checked=(!$valor)?null:"checked";
		$valor=(!$valor)?1:$valor;
		$this->elementos[] = array(
			"nome"=>$nome_elemento,
			"elemento"=>"<label>$titulo</label><input class='$required' $checked type='checkbox' value='1' name='$nome_elemento' />"
		);
	}
	
	function setSeparador(){
		$this->elementos[] = array(
			"elemento"=>"<div style='height: 40px;'>&nbsp;</div>&nbsp;<hr />",
			"separador"=>true
		);
	}
	
	function fieldsetStart($legend,$id){
		$this->elementos[] = array(
			"elemento"=>"</div><div><fieldset class='clone_field' id='fs_$id'><legend>$legend <a onclick='".'clone(this);'."' href='javascript:;'>+</a> <a onclick='".'excluirClone(this);'."' href='javascript:;'>-</a></legend><div class='clone'>"
		);
	}
	
	function fieldsetEnd($id){
		$this->elementos[] = array(
			"elemento"=>"</div></fieldset></div><div class='fs_$id'></div><div>"
		);
	}
	
	function listar($campos,$tabela,$id){
		//$sql="select * from {$tabela['tabela']} join {$tabela['ligacao']} on ({$tabela['campo']}=$id AND {$tabela['campo2']}=id ) GROUP BY {$tabela['campo2']}";
		$sql="select * from {$tabela['tabela']} WHERE id_projeto=$id";

		foreach($campos as $k => $v){
			//$titulo_html .= "<td><b></b></td>";
		}
		
		//$titulo_html = "<tr>$titulo_html<td><b></b></td></tr>";
		
		foreach(DB::parseSql($sql) as $vs){
			$cont++;
			$bkg=($cont%2==0)?"#EAEAEA":"white";
			$corpo_html.="<tr style='background: $bkg'>";
			
			foreach($campos as $k => $v){
				$corpo_html .= "<td style='padding: 5px;padding-left: 10px;'>".$vs[$k]."<br /><span style='color: gray;font-size: 12px;'>{$vs['usuario']}-{$vs['data']}</span></td>";
			}
			$corpo_html .= "<td align='right'><a onclick='".'return confirm("Deseja realmente remover este comentário?");'."' target='_blank' href='excluir-comentario.php?id={$vs['id']}'><img src='images/excluir.gif' /></a>&nbsp;&nbsp;&nbsp;</td>";
			$corpo_html .= "</tr>";
		}
		
		$a="<a target='_blank' href='adicionar-comentario.php?id=$id'>Adicionar Comentário</a>";
		$html = "<h2 id='comentarios_h2' style='margin-bottom: 5px;'>Comentários - $a</h2><table class='tabela_info' cellspacing='0'> $titulo_html $corpo_html </table>";
		
		$this->elementos[] = array(
			"elemento" => ($_GET["acao"]!="novo")?$html:null
		);
		
		//return "<table>$titulo_html $corpo_html </table>";
	}
	
	function campo($tipo_campo,$json_campo,$valor_array=null){
		$dados       = Form::jsonDecode($json_campo);
		
		$nome        = $dados->nome;
		$valor       = $dados->valor;
		$titulo      = $dados->titulo;
		$tipo_dado   = $dados->tipo_dado;
		$requerido   = $dados->requerido;
		$descricao   = $dados->descricao;
		$selecionado = $dados->selecionado;
		$multiple    = $dados->multiple;
		
		if($requerido){
			$this->required[$nome] = $titulo;
			$string_asterisco      = ($requerido)?"*":null;
		}
		
		switch ($tipo_campo){
			case "select":{
				if($e=explode(",",$selecionado)){
					$selecionado=$e;
				}
				
				if(!is_array($valor_array)){
					$valor   = $valor[0];
					//die($valor->where);
					$valor   = DB::fetchTodos("id,$valor->campo_tabela",$valor->tabela,$valor->where);
				}else{
					$valor = $valor_array;
				}
				
				(!$multiple)?$options="<option value=''>Selecione</option>":null;
				
				foreach ($valor as $k => $v){
					$opcao_selecionada = "";
					
					if(is_array($v)){
						$k=$v["id"];
						$v=$v[1];
					}
					if(is_array($selecionado)){
						foreach ($selecionado as $ks){
							($ks==$k)?$opcao_selecionada="selected='selected'":null;
						}
					}else{
						($k==$selecionado)?$opcao_selecionada="selected='selected'":null;
					}
					
					($nome_elemento=="estado" || $nome_elemento=="cidade")?$vopt=utf8_encode($v):$vopt=$v;
					$options.="<option $opcao_selecionada value='{$k}'>{$vopt}</option>";
				}
				
				($multiple)?$multiple=" multiple='multiple' ":null;
				
				$this->elementos[] = array(
					"nome"     => $nome_elemento,
					"elemento" => "<label>$titulo $string_asterisco</label>
						<select $multiple class='$class' name='$nome' id='$nome' >".$options."</select>
						<br />
						<small>$descricao</small>",
					"class"    => $class
				);
				
				//die("<label><div>$titulo $string_asterisco</div><select class='$class' name='$nome' id='$nome' >".$options."</select></label>");
				
				if($tipo_dado){
					$this->criaTabela($nome,$tipo_dado);
				}
				
				break;
			}
		}
	}
    
	function setSelect($nome_elemento,$titulo,$valor=null,$opt=null,$selected=null,$class=null,$tipo=null,$left=null,$required=null){
		($required)?$this->required[$nome_elemento]=$titulo:null;
		$options="<option value=''>Selecione</option>";
		$r=($required)?"*":null;
		foreach ($valor as $k=>$v){
			$sel="";
			
			if(is_array($selected)){
				foreach ($selected as $v2)
					if($v[0]==$v2[1])
						$sel="selected='selected'";
			}else{
				if($v[0]==$selected)
					$sel="selected='selected'";
			}
			
			$vopt=$v[1];
			if($nome_elemento=="estado"||$nome_elemento=="cidade")
				$vopt=utf8_encode($v[1]);
				
			$options.="<option $sel value='{$v[0]}'>{$vopt}</option>";
		}
		
		$this->elementos[] = array(
			"nome"=>$nome_elemento,
			"elemento"=>"<label><div>$titulo $r</div><select class='$class' $opt name='$nome_elemento' id='$nome_elemento' >".$options."</select></label>",
			"left"=>$left,
			"class"=>$class
		);
		
		if($tipo){
			$this->criaTabela($nome_elemento,$tipo);
		}
	}
	
	function setAreaTexto($nome_elemento,$titulo,$valor=null,$required=null,$class=null,$tipo=null,$opt=null,$left=null){
		($required)?$this->required[$nome_elemento]=$titulo:null;
		$r=($required)?"*":null;
		$this->elementos[] = array(
			"nome"=>$nome_elemento,
			"elemento"=>"<label>$titulo</label>
				<textarea class='mceEditor $required $class' style='width: 100%;height: 400px;' name='$nome_elemento' id='$nome_elemento' />$valor</textarea>
				",
			"class"=>$class,
			"left"=>$left
		);
		
		if($tipo){
			$this->criaTabela($nome_elemento,$tipo);
		}
	}
	
	function setHidden($nome_elemento,$valor=null){
		$this->elementos[] = array(
			"nome"=>$nome_elemento,
			"elemento"=>"<input type='hidden' value='$valor' name='$nome_elemento' />"
		);
	}
	
	static function jsonDecode($json){
		$json=str_replace("'",'"',$json);
		return json_decode($json);
	}
	
	function setArquivo($dados){
		$dados=Form::jsonDecode($dados);
		
		if($dados->valor){
			$file=explode(".", "$dados->valor");
			$file=$file[1];
			if($file=="jpg"||$file=="jpeg"||$file=="gif"||$file=="png"||$file=="bmp"){
				$descricao="<a href='{$dados->valor}'><img width='100' src='$dados->valor'/></a>";
			}else{
				$descricao="<strong><a href='{$dados->valor}'>".str_replace("uploads/", "", $dados->valor)."</a></strong>";
			}
			$imagem_excluir="$descricao<span style='float: right;margin-right: -10px;margin-top :7px;'>Excluir&nbsp;<input type='checkbox' name='excluir_arquivo[$dados->valor]' value='1' /></span>";
		}
		//($dados->multi)?$multi="<img src='images/novo.png />'":null;
		
		if($dados->return_elemento){
			return "<div>$imagem_excluir</div>";
		}
		
		$this->elementos[]=array(
			'nome'     => $dados->nome,
			'tipo'     => 'arquivo',
			'multi'    => $dados->multi,
			'elemento' => "<div>$imagem_excluir <input type='file' name='$dados->nome[$dados->nome]' /></div>"
		);
			
		if($dados->tipo){
			$this->criaTabela($dados->nome,$dados->tipo);
		}
	
	}
	
	function popular2($dados){
		//die(print_r($dads)."sdfs");
		$this->__construct($dados);
	}
	
	function criaTabela($campo,$tipo){
		if(TABELA_bb){
			mysql_query("CREATE TABLE IF NOT EXISTS ".TABELA." ( id MEDIUMINT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) )");
			mysql_query("ALTER TABLE ".TABELA." ADD COLUMN $campo $tipo;");
			mysql_query("ALTER TABLE ".TABELA." ADD COLUMN ordem int;");
		}
	}
	
	function set(){
		return $this->elementos;
	}
}

?>